<?php

define ('ENTRADA', 1);
define ('SALIDA', 2);

class servicio extends ActiveRecord {
	public $nombre;
	public $interno; // boolean

	// Parametros
	public $entradas = array(); // array
	public $salidas = array(); // array
	
	public function __construct ($datos = null) {
		parent::__construct ($datos);
		$this->cargar_parametros();
	}

	public function parametros() {
		return array_merge((array)$this->entrada, (array)$this->salida);
	}

    public function insert() {
        $sql = "INSERT INTO servicios 
                (nombre, interno)
                VALUES
                ('$this->nombre', '$this->interno')";
        return $this->id = executeId($sql);
    }

    public function update($datos = null) {
        $this->__cargarParametros($datos);
        $sql = "UPDATE servicios
                SET nombre = '$this->nombre',
					interno = $this->interno
                WHERE id = $this->id";
        return execute($sql);
    }

	public function delete() {
		$parametros = $this->parametros();
		foreach ($parametros as $parametro) {
			$parametro->delete();
		}
		return parent::delete();
	}

    private function cargar_array_parametros($in_out) {
		$sql = "SELECT * FROM parametros
				WHERE id_servicio = $this->id
				AND in_out = $in_out";
		$ParametroClass = new Parametro();
		return $ParametroClass->queryList($sql);
	}

    public function cargar_parametros() {
		if (!$this->id) return;
		$this->entradas = $this->cargar_array_parametros(ENTRADA);
		$this->salidas = $this->cargar_array_parametros(SALIDA);
	}

    private function grabar_array_parametros($array, $in_out) {
		foreach ($array as $parametro) {
			$parametro->save($in_out, $this);
		}
	}

    public function grabar_parametros() {
		 $this->grabar_array_parametros($this->entradas, ENTRADA);
		 $this->grabar_array_parametros($this->salidas, SALIDA);
	}

    public function save() {
		parent::save();
		$this->grabar_parametros();
	}
	

    public function entrada($id, $parametro) {
		$parametro->id_parametro = $id;
		$this->entradas[$id] = $parametro;
	}
    public function salida($id, $parametro) {
		$parametro->id_parametro = $id;
		$this->salidas[$id] = $parametro;
	}


}

?>